Recent semiconductor fabrication techniques have provided for the packaging of complex digital circuits for use as building block elements in microcomputer systems. For example, approximately ten years ago, it was possible to fabricate a single semiconductor element, called an integrated circuit (IC) or "chip", with a marked increase in digital circuitry (i.e., AND or OR gates, flip-flops, etc.) density. These ICs or chips were used as counters, decoders, multiplexers, latches, and the like. Thus, the chips became building block elements of a larger system.
More recently, however, semiconductor fabrication techniques have realized much higher circuit density. For example, metal-oxide-silicon (MOS) semiconductor chips now have a circuit density sufficient to realize a (micro)computer on a single chip. These microcomputers have been found as being particularly useful building blocks themselves in large scale data processing systems. For example, such microcomputer building blocks are now frequently used to provide peripheral units with a modicum of "intelligence" so that when called upon to receive or transmit data to a host computer, the call requires a minimum of time and control by the host computer. Thus, the host computer is relieved of many of the control functions necessary to guide the peripheral unit in its chores.
However, as the host computer, and the overall data processing system it may control, becomes faster and faster with today's technology, the simplicity and speed with which peripheral control operations are implemented become critical. If the overall data processing system with which the peripheral is used is kept waiting for a data or instruction transfer, speed of the overall system is impaired. In fact, the point has been reached in today's technology that MOS microcomputers do not have sufficient speed and performance.
Thus, a user turns to microcontroller systems that are fabricated from bipolar technology (usually, emitter-coupled-logic (ECL)) which can obtain speeds much higher than MOS circuits. However, bipolar technology cannot realize the circuit density obtained by MOS technology; but this, in itself, provides an advantage. Bipolar fabricated microcomputer system architecture is divided into two subsystems: control circuitry that supervises microprogram flow, and data manipulation circuitry that processes data.
Typically, the control circuitry includes a microprogram memory which contains microinstructions. Each microinstruction comprises a plurality of bits to control each of the data manipulation elements of the microcomputer system. In addition, a device or devices, termed a sequencer or microprogram controller, is used to issue addresses that are applied to the microprogram memory to access the microinstruction sequence to be executed. In peripheral controller operation, the microcomputer is often faced with the requirement for the efficient synchronization and response to asynchronous events such as power failure, machine malfunctions, control panel service requests, external timer signals, and input/output device service requests. Handling these asynchronous events, in terms of response time, systems throughput, hardward costs, and memory space required, is a true measure of the performance of the system.
One approach to handling asynchronous events is to incorporate circuitry that provides a status indicator associated with each possible asynchronous event. The microcomputer system then tests each indicator in sequence and, in effect, "asks" if service is required. This is typically referred to as the "polling" method and is often microprogram software implemented. This polling method, however, consumes time, microprogram memory space. System throughput is decreased, response time increased, and microprogram memory space that could otherwise be used for additional purposes dedicated to handling responses to these asynchronous events.
Asynchronous events can also be handled via what is termed an "interrupt" technique whereby the event generates a request signal. The microcomputer system, upon receipt of the request signal, may suspend the program it is presently executing, execute an event service routine, then resume execution of the suspended program. This method, at the additional expense of circuitry, is preferred, particularly in high performance operating systems. The microcomputer is not burdened with having to poll all status signals. Rather, a service routine is executed only when requested. Thus, the system is more efficient since response time is faster; and it is this low response time that is sought by the high performance data processing systems of today.
Yet, there still exists certain problems and disadvantages using the interrupt technique with today's available bipolar microcomputer systems. Presently, additional circuitry is necessary and the sequencer must be programmed to take the time to service the interrupt request circuitry itself.
Further, in order to attain the highest possible speed with which the microprogram memory is accessed, two level "pipelining" techniques are used. These techniques typically insert, in the serial address generating stream, an additional register. The additional register holds the address that is presently applied to the microprogram memory, while the next microinstruction address is being generated. This technique increases the speed of operation, but is more difficult to program because the selection of a microinstruction occurs two instructions ahead of its execution. Further, the ability to service interrupts when operating in a two level pipeline mode can become extremely complex.